<html xmlns="http://www.w3.org/1999/xhtml"><head><title>lib/dispatcher.php</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta><link rel="stylesheet" href="../css/black-tie/jquery-ui-1.8.2.custom.css" type="text/css"></link><link rel="stylesheet" href="../css/jquery.treeview.css" type="text/css"></link><link rel="stylesheet" href="../css/default.css" type="text/css"></link><script type="text/javascript" src="../js/jquery-1.4.2.min.js"></script><script type="text/javascript" src="../js/jquery-ui-1.8.2.custom.min.js"></script><script type="text/javascript" src="../js/jquery.treeview.js"></script></head><body><script type="text/javascript">
          $(document).ready(function()
          {
            $(".treeview-docblox").treeview({
              animated: 'fast'
            });
          });

          function jq_escape(myid)
          {
            return '#' + myid.replace(/(#|\$|:|\.|\(|\))/g, '\\$1');
          }

          function applySearchHash()
          {
            hashes = document.location.hash.substr(1, document.location.hash.length);
            if (hashes != "")
            {
              hashes = hashes.split('/');
              $.each(hashes, function(index, hash)
              {
                node = $(jq_escape(hash));
                switch (node[0].nodeName)
                {
                  case 'DIV':
                    tabs = node.parents('.tabs');
                    $(tabs[0]).tabs('select', '#' + hash)
                    break;
                  case 'A':
                    window.scrollTo(0, node.offset().top);
                    break;
                }
              });
            }
          }

          jQuery(function()
          {
            jQuery(".tabs").tabs();
            applySearchHash();
          });
        </script><div id="maincontainer"><div id="header"><div class="padder"></div></div><div id="content_container"><div id="content"><div class="padder"><h1 xmlns="">lib/dispatcher.php</h1>
<div xmlns="" class="properties">
<h1>Properties</h1>
<label class="property-key">package</label><div class="property-value"><a title="kata_internal" href="">kata_internal</a></div>
</div>
<h3 xmlns="">Description</h3>Contains the dispatcher-class. Here is where it all starts.<br xmlns=""><br xmlns="">Kata - Lightweight MVC Framework <http://www.codeninja.de/>
Copyright 2007-2009 mnt@codeninja.de, gameforge ag

Licensed under The GPL License
Redistributions of files must retain the above copyright notice.<br xmlns=""><h2 xmlns="">Classes</h2>
<div xmlns="" id="dispatcher">
<h3>dispatcher</h3>
<div class="properties">
<h1>Properties</h1>
<label class="property-key">Extends</label><div class="property-value"> </div>
<label class="property-key">Implements</label><div class="property-value"> 
      </div>
<label class="property-key">package</label><div class="property-value">
<a title="kata_internal">kata_internal</a>
             
        </div>
<label class="property-key">Abstract</label><div class="property-value">No 
      </div>
<label class="property-key">Final</label><div class="property-value">No 
      </div>
</div>
<h4>Description</h4>
<em>dispatcher. this is the first thing that is constructed.
the dispatcher then collects all parameters given via get/post and instanciates the right controller</em><br><br><div id="methods_dispatcher">
<h4>Methods</h4>
<a style="font-style: italic;" href="#dispatcher::__construct()">__construct</a>,
      <a style="font-style: italic;" href="#dispatcher::__destruct()">__destruct</a>,
      <a style="font-style: italic;" href="#dispatcher::constructBasePath()">constructBasePath</a>,
      <a style="font-style: italic;" href="#dispatcher::constructBaseUrl()">constructBaseUrl</a>,
      <a style="font-style: italic;" href="#dispatcher::constructController()">constructController</a>,
      <a style="font-style: italic;" href="#dispatcher::constructParams()">constructParams</a>,
      <a style="font-style: italic;" href="#dispatcher::dispatch()">dispatch</a>,
      <a style="font-style: italic;" href="#dispatcher::fourohfour()">fourohfour</a>,
      <a style="font-style: italic;" href="#dispatcher::handleCachedFiles()">handleCachedFiles</a>,
      <div class="method">
<a id="dispatcher::__construct()"></a><h3>__construct<span class="nb-faded-text">(
          
          )
        </span>
        :
        <span class="nb-faded-text">n/a</span>
</h3>
<h4>Description</h4>
<em>constructor, just initializes starttime</em><br><h4>Return value</h4>
<table>
<thead><tr>
<th>Type</th>
<th>Description</th>
</tr></thead>
<tbody><tr>
<td>n/a</td>
<td>n/a</td>
</tr></tbody>
</table>
</div>
<div class="method">
<a id="dispatcher::__destruct()"></a><h3>__destruct<span class="nb-faded-text">(
          
          )
        </span>
        :
        <span class="nb-faded-text">n/a</span>
</h3>
<h4>Description</h4>
<em>destructor, outputs Total Render time if DEBUG&gt;0</em><br><h4>Return value</h4>
<table>
<thead><tr>
<th>Type</th>
<th>Description</th>
</tr></thead>
<tbody><tr>
<td>n/a</td>
<td>n/a</td>
</tr></tbody>
</table>
</div>
<div class="method">
<a id="dispatcher::constructBasePath()"></a><h3>constructBasePath<span class="nb-faded-text">(
          
          )
        </span>
        :
        <span class="nb-faded-text">string</span>
</h3>
<h4>Description</h4>
<em>construct the url path under which this framework can be called from the browser. adds / at the end</em><br><h4>Return value</h4>
<table>
<thead><tr>
<th>Type</th>
<th>Description</th>
</tr></thead>
<tbody><tr>
<td>string</td>
<td></td>
</tr></tbody>
</table>
</div>
<div class="method">
<a id="dispatcher::constructBaseUrl()"></a><h3>constructBaseUrl<span class="nb-faded-text">(
          
          )
        </span>
        :
        <span class="nb-faded-text">n/a</span>
</h3>
<h4>Description</h4>
<em>tries to construct the base url under which this framework can be called from the browser. adds a "/" at the end</em><br><h4>Return value</h4>
<table>
<thead><tr>
<th>Type</th>
<th>Description</th>
</tr></thead>
<tbody><tr>
<td>n/a</td>
<td>n/a</td>
</tr></tbody>
</table>
</div>
<div class="method">
<a id="dispatcher::constructController()"></a><h3>constructController<span class="nb-faded-text">(
           $classname,
          
          )
        </span>
        :
        <span class="nb-faded-text">n/a</span>
</h3>
<h4>Arguments</h4>
<table>
<thead><tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr></thead>
<tbody><tr>
<td>$classname</td>
<td>n/a</td>
<td></td>
<td></td>
</tr></tbody>
</table>
<h4>Return value</h4>
<table>
<thead><tr>
<th>Type</th>
<th>Description</th>
</tr></thead>
<tbody><tr>
<td>n/a</td>
<td>n/a</td>
</tr></tbody>
</table>
</div>
<div class="method">
<a id="dispatcher::constructParams()"></a><h3>constructParams<span class="nb-faded-text">(
          string $url,
           $routes
            = null,
          
          )
        </span>
        :
        <span class="nb-faded-text">n/a</span>
</h3>
<h4>Description</h4>
<em>extract,clean and dequote any given get/post-parameters
find out which controller and view we should use</em><br><h4>Arguments</h4>
<table>
<thead><tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr></thead>
<tbody>
<tr>
<td>$url</td>
<td>string</td>
<td>raw url (see dispatch())</td>
<td></td>
</tr>
<tr>
<td>$routes</td>
<td>n/a</td>
<td></td>
<td>null</td>
</tr>
</tbody>
</table>
<h4>Return value</h4>
<table>
<thead><tr>
<th>Type</th>
<th>Description</th>
</tr></thead>
<tbody><tr>
<td>n/a</td>
<td>n/a</td>
</tr></tbody>
</table>
</div>
<div class="method">
<a id="dispatcher::dispatch()"></a><h3>dispatch<span class="nb-faded-text">(
          string $url,
           $routes
            = null,
          
          )
        </span>
        :
        <span class="nb-faded-text">n/a</span>
</h3>
<h4>Description</h4>
<em>start the actual mvc-machinery
1. constructs all needed params by calling constructParams</em><br><small>2. loads the controller
3. sets all needed variables of the controller
4. calls constructClasses of the controller, which in turn constructs all needed models and components
5. render the actual view and layout (if autoRender is true)
6. return the output</small><br><h4>Arguments</h4>
<table>
<thead><tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr></thead>
<tbody>
<tr>
<td>$url</td>
<td>string</td>
<td>raw url string passed to the array (eg. /main/index/foo/bar)</td>
<td></td>
</tr>
<tr>
<td>$routes</td>
<td>n/a</td>
<td></td>
<td>null</td>
</tr>
</tbody>
</table>
<h4>Return value</h4>
<table>
<thead><tr>
<th>Type</th>
<th>Description</th>
</tr></thead>
<tbody><tr>
<td>n/a</td>
<td>n/a</td>
</tr></tbody>
</table>
</div>
<div class="method">
<a id="dispatcher::fourohfour()"></a><h3>fourohfour<span class="nb-faded-text">(
          
          )
        </span>
        :
        <span class="nb-faded-text">n/a</span>
</h3>
<h4>Return value</h4>
<table>
<thead><tr>
<th>Type</th>
<th>Description</th>
</tr></thead>
<tbody><tr>
<td>n/a</td>
<td>n/a</td>
</tr></tbody>
</table>
</div>
<div class="method">
<a id="dispatcher::handleCachedFiles()"></a><h3>handleCachedFiles<span class="nb-faded-text">(
           $what,
           $version,
          
          )
        </span>
        :
        <span class="nb-faded-text">n/a</span>
</h3>
<h4>Arguments</h4>
<table>
<thead><tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr></thead>
<tbody>
<tr>
<td>$what</td>
<td>n/a</td>
<td></td>
<td></td>
</tr>
<tr>
<td>$version</td>
<td>n/a</td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<h4>Return value</h4>
<table>
<thead><tr>
<th>Type</th>
<th>Description</th>
</tr></thead>
<tbody><tr>
<td>n/a</td>
<td>n/a</td>
</tr></tbody>
</table>
</div>
</div>
<div id="properties_dispatcher">
<h2>Properties</h2>
<a href="#dispatcher::%24controller">$controller</a>,
      <a href="#dispatcher::%24forbiddenActions">$forbiddenActions</a>,
      <a href="#dispatcher::%24params">$params</a>,
      <a href="#dispatcher::%24starttime">$starttime</a>,
      <div class="method">
<a id="dispatcher::$controller"></a><h3>
<span class="nb-faded-text">string 
          public 
          </span>$controller</h3>
<em>name of the current controller</em><br><small></small><br><br>
</div>
<div class="method">
<a id="dispatcher::$forbiddenActions"></a><h3>
<span class="nb-faded-text"> 
          private 
          </span>$forbiddenActions</h3>
<em></em><br><br>
</div>
<div class="method">
<a id="dispatcher::$params"></a><h3>
<span class="nb-faded-text">array 
          public 
          </span>$params</h3>
<em>placeholer-array for all relevant variables a class may need later on (e.g. controller)
[isAjax] =&gt; false (boolean, tells you if view got called with /ajax/)</em><br><small>[url] =&gt; Array (
      [url] =&gt; locations
      [foo] =&gt; bar (if url read ?foo=bar)
)
[form] =&gt; Array (
	  (all post-variables, automatically dequoted if needed)
)
[controller] =&gt; main (name of the controller of this request)
[action] =&gt; index (name of the view of this request)</small><br><br>
</div>
<div class="method">
<a id="dispatcher::$starttime"></a><h3>
<span class="nb-faded-text"> 
          private 
          </span>$starttime</h3>
<em>time in us the dispather started (used to calculate how long the framework took to completely render anything)</em><br><small></small><br><br>
</div>
</div>
</div></div></div></div><div id="menu"><div class="padder"><h1><img src="../images/logo.png" alt=""></img></h1><div id="search-box"><script xmlns="" type="text/javascript">
      $(function() {

        var is_chrome = /chrome/.test( navigator.userAgent.toLowerCase() );
        var is_local = /file:\/\//.test(document.location.href);
        if (is_chrome && is_local)
        {
          // search is disabled on chrome with local files due to http://code.google.com/p/chromium/issues/detail?id=40787
          return;
        }

        $("#search_box").show();
        var search_index = {};
        $.ajax({
          url: "../search_index.xml",
          dataType: ($.browser.msie) ? "text" : "xml",
          error: function(data) {
            alert('An error occurred using the search data');
          },
          success: function( data ) {
            var xml;
            if (typeof data == "string") {
              xml = new ActiveXObject("Microsoft.XMLDOM");
              xml.async = false;
              xml.loadXML(data);
            } else {
              xml = data;
            }

            search_index = $("node", xml).map(function() {
              type = $("type", this).text();
              return {
                value: $("value", this).text(),
                label: '<img src="../images/icons/'+type+'.png" align="absmiddle">'+$("value", this).text(),
                id: $("id", this).text(),
              };
            }).get();

            $("#search_box").autocomplete({
              source: search_index,
              select: function(event, ui) {
                // redirect to the documentation
                $(location).attr('href', '../'+ui.item.id);
                applySearchHash();
              }
            });
          }
        });
      });
    </script><input id="search_box" style="display: none"></input></div><h4>Documentation</h4><ul><li><a href="../index.html">Class diagram</a></li><li><a href="../markers.html">TODO / Markers</a></li></ul></div></div><div id="index"><div class="padder"><h1>Namespaces</h1><ul id="namespaces-" class="treeview-docblox"><li class="namespace closed">
<div class="content"><span>default</span></div>
<ul>
<li><div class="content">
<span><a href="../files/boot_strict.html#kataStrictError">kataStrictError</a></span><small>our own exception to inject line and file into exception</small>
</div></li>
<li><div class="content">
<span><a href="../files/class_registry.html#classRegistry">classRegistry</a></span><small>Class-registry, a pseudo-singleton wrapper. Used to memorize and return all classes we did already instanciate.</small>
</div></li>
<li><div class="content">
<span><a href="../files/clustermodel.html#ClusterModel">ClusterModel</a></span><small>The cluster enabled model-class
give it an array of connection-names for database-masters (those are used to alter data)</small>
</div></li>
<li><div class="content">
<span><a href="../files/controller.html#Controller">Controller</a></span><small>The controller itself. Is initialized by the dispatcher.</small>
</div></li>
<li><div class="content">
<span><a href="../files/controller.html#Component">Component</a></span><small>base component class</small>
</div></li>
<li><div class="content">
<span><a href="../files/controllers_app_controller.html#AppController">AppController</a></span><small>A dummy-class that is included if the user does not supply an appcontroller.</small>
</div></li>
<li><div class="content">
<span><a href="../files/controllers_components_client.session.html#SessionComponent">SessionComponent</a></span><small>An experimental component for object oriented session handling using encrypted client-side cookies.
keep in mind: this cookie is VERY BIG and is sent on EVERY request, even images!</small>
</div></li>
<li><div class="content">
<span><a href="../files/controllers_components_file.session.html#SessionComponent">SessionComponent</a></span><small>A component for object oriented session handling using standard filesystem cookies</small>
</div></li>
<li><div class="content">
<span><a href="../files/controllers_components_locale.html#LocaleComponent">LocaleComponent</a></span><small>The Locale-Component Class</small>
</div></li>
<li><div class="content">
<span><a href="../files/controllers_components_memcached.session.html#SessionComponent">SessionComponent</a></span><small>A component for object oriented session handling using memcached
needs PECL memcached-extension 2.1.2 or bigger</small>
</div></li>
<li><div class="content">
<span><a href="../files/controllers_components_session.html#baseSessionComponent">baseSessionComponent</a></span><small>base session class</small>
</div></li>
<li><div class="content">
<span><a href="../files/controllers_scaffold_controller.html#ScaffoldController">ScaffoldController</a></span><small>default scaffolding-controller. extend it and use the hooks to costumize functionality</small>
</div></li>
<li><div class="content">
<span><a href="../files/databaseconnectexception.html#DatabaseConnectException">DatabaseConnectException</a></span><small>Thrown on database connection problems</small>
</div></li>
<li><div class="content">
<span><a href="../files/databaseduplicateexception.html#DatabaseDuplicateException">DatabaseDuplicateException</a></span><small>Thrown if an sql-query generates an duplication error due du primary/unique constraints</small>
</div></li>
<li><div class="content">
<span><a href="../files/databaseerrorexception.html#DatabaseErrorException">DatabaseErrorException</a></span><small>Thrown if an sql-query generates an error</small>
</div></li>
<li><div class="content">
<span><a href="../files/dbo_mssql.html#dbo_mssql">dbo_mssql</a></span><small>this class is used by the model to access the database itself</small>
</div></li>
<li><div class="content">
<span><a href="../files/dbo_mysql.html#dbo_mysql">dbo_mysql</a></span><small>this class is used by the model to access the database itself</small>
</div></li>
<li><div class="content">
<span><a href="../files/dbo_pdo.html#dbo_pdo">dbo_pdo</a></span><small>this class is used by the model to access the database itself</small>
</div></li>
<li><div class="content">
<span><a href="../files/dispatcher.html#dispatcher">dispatcher</a></span><small>dispatcher. this is the first thing that is constructed.
the dispatcher then collects all parameters given via get/post and instanciates the right controller</small>
</div></li>
<li><div class="content">
<span><a href="../files/helper.html#Helper">Helper</a></span><small>helper base-class. helpers are the classes you can access via $this-&gt;helpername inside a view</small>
</div></li>
<li><div class="content">
<span><a href="../files/kataext.html#kataExt">kataExt</a></span><small>you can freely add methods to this class at runtime</small>
</div></li>
<li><div class="content">
<span><a href="../files/kataglob.html#kataGlob">kataGlob</a></span><small>class for easy handling of global variables</small>
</div></li>
<li><div class="content">
<span><a href="../files/katahardtyped.html#kataHardtyped">kataHardtyped</a></span><small>type-enforcement class. just base your class on this class
- dont forget to call parent::__construct() if you override the c&quot;tor</small>
</div></li>
<li><div class="content">
<span><a href="../files/kataimmutable.html#kataImmutable">kataImmutable</a></span><small>todo</small>
</div></li>
<li><div class="content">
<span><a href="../files/katareg.html#kataReg">kataReg</a></span><small>registry, a configuration object that persists itself on disk.
split keys into individial sections with a dot. if you read a section an array will be returned with all keys in that section</small>
</div></li>
<li><div class="content">
<span><a href="../files/kata_functions.html#kataFunc">kataFunc</a></span><small>static wrapper class so dont we pollute any namespace anymore</small>
</div></li>
<li><div class="content">
<span><a href="../files/model.html#Model">Model</a></span><small>The base model-class that all models derive from</small>
</div></li>
<li><div class="content">
<span><a href="../files/modelloader.html#ModelLoader">ModelLoader</a></span><small>use other models inside models just like inside controllers</small>
</div></li>
<li><div class="content">
<span><a href="../files/modelloadermodel.html#ModelLoaderModel">ModelLoaderModel</a></span><small>use other models inside models just like inside controllers</small>
</div></li>
<li><div class="content">
<span><a href="../files/models_app_model.html#AppModel">AppModel</a></span><small>A dummy-class that is included if the user does not supply an appmodel.</small>
</div></li>
<li><div class="content">
<span><a href="../files/smartyview.html#SmartyView">SmartyView</a></span><small>smarty view class. used to render the view (and layout) for the controller. ALPHAish.
to use put the following in your controller:</small>
</div></li>
<li><div class="content">
<span><a href="../files/utilities_cacheutility.html#CacheUtility">CacheUtility</a></span><small>a universal caching class that can store data using several methods</small>
</div></li>
<li><div class="content">
<span><a href="../files/utilities_clusterlockutility.html#ClusterlockUtility">ClusterlockUtility</a></span><small>CLUSTERwide locking mechanism with timeout for critical sections or eventhandlers
(needs memcached)</small>
</div></li>
<li><div class="content">
<span><a href="../files/utilities_extcacheutility.html#ExtcacheUtility">ExtcacheUtility</a></span><small>extends the normal cacheutility with more memcached functions</small>
</div></li>
<li><div class="content">
<span><a href="../files/utilities_httputility.html#HttpUtility">HttpUtility</a></span><small>http-request class that does GET and POST (and even SSL) and has no dependencies</small>
</div></li>
<li><div class="content">
<span><a href="../files/utilities_imageutility.html#ImageUtility">ImageUtility</a></span><small>routines to resize images and handle downloads</small>
</div></li>
<li><div class="content">
<span><a href="../files/utilities_iputility.html#IpUtility">IpUtility</a></span><small>some ip utility functions</small>
</div></li>
<li><div class="content">
<span><a href="../files/utilities_lockutility.html#LockUtility">LockUtility</a></span><small>systemwide locking mechanism with timeout for critical sections or eventhandlers</small>
</div></li>
<li><div class="content">
<span><a href="../files/utilities_minifyutility.html#MinifyUtility">MinifyUtility</a></span><small>methods to compress css and javascript</small>
</div></li>
<li><div class="content">
<span><a href="../files/utilities_minifyutility.html#JSMin">JSMin</a></span><small>jsmin.php - PHP implementation of Douglas Crockford&quot;s JSMin.</small>
</div></li>
<li><div class="content">
<span><a href="../files/utilities_minifyutility.html#JSMinException">JSMinException</a></span><small>Exceptions ---------------------------------------------------------------</small>
</div></li>
<li><div class="content">
<span><a href="../files/utilities_rsautility.html#RsaUtility">RsaUtility</a></span><small>rsa asymetric crypto related functions</small>
</div></li>
<li><div class="content">
<span><a href="../files/utilities_simpleparseutility.html#SimpleparseUtility">SimpleparseUtility</a></span><small>routines for super simple pattern parsing</small>
</div></li>
<li><div class="content">
<span><a href="../files/utilities_validateutility.html#ValidateUtility">ValidateUtility</a></span><small>check if an array of parameters matches certain criterias.
you can still use the (deprecated) defines of model.php (until i murder you)</small>
</div></li>
<li><div class="content">
<span><a href="../files/view.html#View">View</a></span><small>default view class. used to render the view (and layout) for the controller</small>
</div></li>
<li><div class="content">
<span><a href="../files/views_helpers_form.html#FormHelper">FormHelper</a></span><small>form helper for super-easy form handling</small>
</div></li>
<li><div class="content">
<span><a href="../files/views_helpers_html.html#HtmlHelper">HtmlHelper</a></span><small>the default html-helper, available in each view.
modify this helper, or build your own one.</small>
</div></li>
<li><div class="content">
<span><a href="../files/views_helpers_js.html#JsHelper">JsHelper</a></span><small>nano-helper for javascript. simply add() javascript in your view, and get() it inside the head-section of your layout</small>
</div></li>
</ul>
</li></ul><h1>Packages</h1><ul id="packages-" class="treeview-docblox">
<li class="package closed">
<div class="content"><span>JSMin</span></div>
<ul id="packages_JSMin" class="treeview-docblox">
<li class="closed"><div class="content">
<span><a href="../files/utilities_minifyutility.html#JSMin">JSMin</a></span><small>jsmin.php - PHP implementation of Douglas Crockford&quot;s JSMin.</small>
</div></li>
<li class="closed"><div class="content">
<span><a href="../files/utilities_minifyutility.html#JSMinException">JSMinException</a></span><small>Exceptions ---------------------------------------------------------------</small>
</div></li>
</ul>
</li>
<li class="package closed">
<div class="content"><span>kata</span></div>
<ul id="packages_kata" class="treeview-docblox"></ul>
</li>
<li class="package closed">
<div class="content"><span>kata_component</span></div>
<ul id="packages_kata_component" class="treeview-docblox">
<li class="closed"><div class="content">
<span><a href="../files/controller.html#Component">Component</a></span><small>base component class</small>
</div></li>
<li class="closed"><div class="content">
<span><a href="../files/controllers_components_client.session.html#SessionComponent">SessionComponent</a></span><small>An experimental component for object oriented session handling using encrypted client-side cookies.
keep in mind: this cookie is VERY BIG and is sent on EVERY request, even images!</small>
</div></li>
<li class="closed"><div class="content">
<span><a href="../files/controllers_components_file.session.html#SessionComponent">SessionComponent</a></span><small>A component for object oriented session handling using standard filesystem cookies</small>
</div></li>
<li class="closed"><div class="content">
<span><a href="../files/controllers_components_locale.html#LocaleComponent">LocaleComponent</a></span><small>The Locale-Component Class</small>
</div></li>
<li class="closed"><div class="content">
<span><a href="../files/controllers_components_memcached.session.html#SessionComponent">SessionComponent</a></span><small>A component for object oriented session handling using memcached
needs PECL memcached-extension 2.1.2 or bigger</small>
</div></li>
<li class="closed"><div class="content">
<span><a href="../files/controllers_components_session.html#baseSessionComponent">baseSessionComponent</a></span><small>base session class</small>
</div></li>
</ul>
</li>
<li class="package closed">
<div class="content"><span>kata_controller</span></div>
<ul id="packages_kata_controller" class="treeview-docblox">
<li class="closed"><div class="content">
<span><a href="../files/controller.html#Controller">Controller</a></span><small>The controller itself. Is initialized by the dispatcher.</small>
</div></li>
<li class="closed"><div class="content">
<span><a href="../files/controllers_app_controller.html#AppController">AppController</a></span><small>A dummy-class that is included if the user does not supply an appcontroller.</small>
</div></li>
</ul>
</li>
<li class="package closed">
<div class="content"><span>kata_debugging</span></div>
<ul id="packages_kata_debugging" class="treeview-docblox"><li class="closed"><div class="content">
<span><a href="../files/boot_strict.html#kataStrictError">kataStrictError</a></span><small>our own exception to inject line and file into exception</small>
</div></li></ul>
</li>
<li class="package closed">
<div class="content"><span>kata_helper</span></div>
<ul id="packages_kata_helper" class="treeview-docblox">
<li class="closed"><div class="content">
<span><a href="../files/helper.html#Helper">Helper</a></span><small>helper base-class. helpers are the classes you can access via $this-&gt;helpername inside a view</small>
</div></li>
<li class="closed"><div class="content">
<span><a href="../files/views_helpers_form.html#FormHelper">FormHelper</a></span><small>form helper for super-easy form handling</small>
</div></li>
<li class="closed"><div class="content">
<span><a href="../files/views_helpers_html.html#HtmlHelper">HtmlHelper</a></span><small>the default html-helper, available in each view.
modify this helper, or build your own one.</small>
</div></li>
<li class="closed"><div class="content">
<span><a href="../files/views_helpers_js.html#JsHelper">JsHelper</a></span><small>nano-helper for javascript. simply add() javascript in your view, and get() it inside the head-section of your layout</small>
</div></li>
</ul>
</li>
<li class="package closed">
<div class="content"><span>kata_internal</span></div>
<ul id="packages_kata_internal" class="treeview-docblox">
<li class="closed"><div class="content">
<span><a href="../files/class_registry.html#classRegistry">classRegistry</a></span><small>Class-registry, a pseudo-singleton wrapper. Used to memorize and return all classes we did already instanciate.</small>
</div></li>
<li class="closed"><div class="content">
<span><a href="../files/dispatcher.html#dispatcher">dispatcher</a></span><small>dispatcher. this is the first thing that is constructed.
the dispatcher then collects all parameters given via get/post and instanciates the right controller</small>
</div></li>
<li class="closed"><div class="content">
<span><a href="../files/kataext.html#kataExt">kataExt</a></span><small>you can freely add methods to this class at runtime</small>
</div></li>
<li class="closed"><div class="content">
<span><a href="../files/kataglob.html#kataGlob">kataGlob</a></span><small>class for easy handling of global variables</small>
</div></li>
<li class="closed"><div class="content">
<span><a href="../files/katahardtyped.html#kataHardtyped">kataHardtyped</a></span><small>type-enforcement class. just base your class on this class
- dont forget to call parent::__construct() if you override the c&quot;tor</small>
</div></li>
<li class="closed"><div class="content">
<span><a href="../files/kataimmutable.html#kataImmutable">kataImmutable</a></span><small>todo</small>
</div></li>
<li class="closed"><div class="content">
<span><a href="../files/katareg.html#kataReg">kataReg</a></span><small>registry, a configuration object that persists itself on disk.
split keys into individial sections with a dot. if you read a section an array will be returned with all keys in that section</small>
</div></li>
</ul>
</li>
<li class="package closed">
<div class="content"><span>kata_model</span></div>
<ul id="packages_kata_model" class="treeview-docblox">
<li class="closed"><div class="content">
<span><a href="../files/clustermodel.html#ClusterModel">ClusterModel</a></span><small>The cluster enabled model-class
give it an array of connection-names for database-masters (those are used to alter data)</small>
</div></li>
<li class="closed"><div class="content">
<span><a href="../files/databaseconnectexception.html#DatabaseConnectException">DatabaseConnectException</a></span><small>Thrown on database connection problems</small>
</div></li>
<li class="closed"><div class="content">
<span><a href="../files/databaseduplicateexception.html#DatabaseDuplicateException">DatabaseDuplicateException</a></span><small>Thrown if an sql-query generates an duplication error due du primary/unique constraints</small>
</div></li>
<li class="closed"><div class="content">
<span><a href="../files/databaseerrorexception.html#DatabaseErrorException">DatabaseErrorException</a></span><small>Thrown if an sql-query generates an error</small>
</div></li>
<li class="closed"><div class="content">
<span><a href="../files/dbo_mssql.html#dbo_mssql">dbo_mssql</a></span><small>this class is used by the model to access the database itself</small>
</div></li>
<li class="closed"><div class="content">
<span><a href="../files/dbo_mysql.html#dbo_mysql">dbo_mysql</a></span><small>this class is used by the model to access the database itself</small>
</div></li>
<li class="closed"><div class="content">
<span><a href="../files/dbo_pdo.html#dbo_pdo">dbo_pdo</a></span><small>this class is used by the model to access the database itself</small>
</div></li>
<li class="closed"><div class="content">
<span><a href="../files/model.html#Model">Model</a></span><small>The base model-class that all models derive from</small>
</div></li>
<li class="closed"><div class="content">
<span><a href="../files/modelloader.html#ModelLoader">ModelLoader</a></span><small>use other models inside models just like inside controllers</small>
</div></li>
<li class="closed"><div class="content">
<span><a href="../files/modelloadermodel.html#ModelLoaderModel">ModelLoaderModel</a></span><small>use other models inside models just like inside controllers</small>
</div></li>
<li class="closed"><div class="content">
<span><a href="../files/models_app_model.html#AppModel">AppModel</a></span><small>A dummy-class that is included if the user does not supply an appmodel.</small>
</div></li>
</ul>
</li>
<li class="package closed">
<div class="content"><span>kata_scaffold</span></div>
<ul id="packages_kata_scaffold" class="treeview-docblox"><li class="closed"><div class="content">
<span><a href="../files/controllers_scaffold_controller.html#ScaffoldController">ScaffoldController</a></span><small>default scaffolding-controller. extend it and use the hooks to costumize functionality</small>
</div></li></ul>
</li>
<li class="package closed">
<div class="content"><span>kata_utility</span></div>
<ul id="packages_kata_utility" class="treeview-docblox">
<li class="closed"><div class="content">
<span><a href="../files/utilities_cacheutility.html#CacheUtility">CacheUtility</a></span><small>a universal caching class that can store data using several methods</small>
</div></li>
<li class="closed"><div class="content">
<span><a href="../files/utilities_clusterlockutility.html#ClusterlockUtility">ClusterlockUtility</a></span><small>CLUSTERwide locking mechanism with timeout for critical sections or eventhandlers
(needs memcached)</small>
</div></li>
<li class="closed"><div class="content">
<span><a href="../files/utilities_extcacheutility.html#ExtcacheUtility">ExtcacheUtility</a></span><small>extends the normal cacheutility with more memcached functions</small>
</div></li>
<li class="closed"><div class="content">
<span><a href="../files/utilities_httputility.html#HttpUtility">HttpUtility</a></span><small>http-request class that does GET and POST (and even SSL) and has no dependencies</small>
</div></li>
<li class="closed"><div class="content">
<span><a href="../files/utilities_imageutility.html#ImageUtility">ImageUtility</a></span><small>routines to resize images and handle downloads</small>
</div></li>
<li class="closed"><div class="content">
<span><a href="../files/utilities_iputility.html#IpUtility">IpUtility</a></span><small>some ip utility functions</small>
</div></li>
<li class="closed"><div class="content">
<span><a href="../files/utilities_lockutility.html#LockUtility">LockUtility</a></span><small>systemwide locking mechanism with timeout for critical sections or eventhandlers</small>
</div></li>
<li class="closed"><div class="content">
<span><a href="../files/utilities_minifyutility.html#MinifyUtility">MinifyUtility</a></span><small>methods to compress css and javascript</small>
</div></li>
<li class="closed"><div class="content">
<span><a href="../files/utilities_rsautility.html#RsaUtility">RsaUtility</a></span><small>rsa asymetric crypto related functions</small>
</div></li>
<li class="closed"><div class="content">
<span><a href="../files/utilities_simpleparseutility.html#SimpleparseUtility">SimpleparseUtility</a></span><small>routines for super simple pattern parsing</small>
</div></li>
<li class="closed"><div class="content">
<span><a href="../files/utilities_validateutility.html#ValidateUtility">ValidateUtility</a></span><small>check if an array of parameters matches certain criterias.
you can still use the (deprecated) defines of model.php (until i murder you)</small>
</div></li>
</ul>
</li>
<li class="package closed">
<div class="content"><span>kata_view</span></div>
<ul id="packages_kata_view" class="treeview-docblox">
<li class="closed"><div class="content">
<span><a href="../files/smartyview.html#SmartyView">SmartyView</a></span><small>smarty view class. used to render the view (and layout) for the controller. ALPHAish.
to use put the following in your controller:</small>
</div></li>
<li class="closed"><div class="content">
<span><a href="../files/view.html#View">View</a></span><small>default view class. used to render the view (and layout) for the controller</small>
</div></li>
</ul>
</li>
</ul>
</div></div><div id="footer"><div class="padder"></div></div></div></body></html>
